<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>数组扩展方法</title>
</head>
<body>

<!--
需求：
①：给数组扩展求最大值方法和求和方法
比如： 以前学过
const arr = [1,2,3]
arr.reverse() 结果是 [3,2,1]
扩展完毕之后：
arr.sum() 返回的结果是 6
-->

<script>
    // 自己定义 数组扩展方法  求和 和 最大值
    // 1. 我们定义的这个方法，任何一个数组实例对象都可以使用
    // 2. 自定义的方法写到  数组.prototype 身上

    const 数字数组 = [1, 2, 3, 4, 5]

    // 最大值方法, 原型
    Array.prototype.最大值 = function () {
        // max求最大值,  ... 展开运算符.  数组无法直接元素,要先展开
        return Math.max(...this)
        // 原型函数里面的this 指向谁？ 实例对象.  这里是数组所以 ...this 相当于 ...数组
    }

    // 最小值
    Array.prototype.最小值 = function () {
        // 展开运算符
        return Math.min(...this)
        // 原型函数里面的this 指向谁？ 实例对象
    }

    console.log(数字数组.最大值())
    console.log([3, 66, 88].最大值())
    console.log([3, 66, 88].最小值())


    console.log('-------------------------')
    // 求和 方法 , 原型写法
    Array.prototype.求和 = function () {
        // reduce累计器
        return this.reduce((累计和, 元素) => 累计和 += 元素, 0)
        // this指向它的实例对象
    }
    console.log([1, 2, 3].求和()) // 这里数组就是,实例对象
    console.log([11, 21, 31].求和())
    console.log(数字数组.求和())
</script>

</body>
</html>